mem_event: Allow memory access listener to perform single step execution.
authorAravindh Puthiyaparambil <aravindh@virtuata.com>
Fri, 27 May 2011 17:44:26 +0000 (18:44 +0100)
committerAravindh Puthiyaparambil <aravindh@virtuata.com>
Fri, 27 May 2011 17:44:26 +0000 (18:44 +0100)
commit3756493af337cb4ea5fae6b437ad1da9b3baf09a
treefc8bf001fa63295b131345bf6a6192be75677d0c
parentdcf2f8a8e173523465cb2147c4d573c53184c8ae
mem_event: Allow memory access listener to perform single step execution.

Add a new memory event that handles single step. This allows the
memory access listener to handle instructions that modify data within
the execution page.  This can be enabled in the listener by doing:
xc_set_hvm_param(xch, domain_id, HVM_PARAM_MEMORY_EVENT_SINGLE_STEP,
HVMPME_mode_sync)

Now the listener can start single stepping by:
xc_domain_debug_control(xch, domain_id,
XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_ON, vcpu_id)

And stop single stepping by: xc_domain_debug_control(xch, domain_id,
XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_OFF, vcpu_id)

Signed-off-by: Aravindh Puthiyaparambil <aravindh@virtuata.com>
Acked-by: Tim Deegan <Tim.Deegan@citrix.com>
xen/arch/x86/hvm/hvm.c
xen/arch/x86/hvm/vmx/vmcs.c
xen/arch/x86/hvm/vmx/vmx.c
xen/include/asm-x86/hvm/hvm.h
xen/include/public/hvm/params.h
xen/include/public/mem_event.h